System.Collections.ObjectModel.ObservableCollection<classe T>

Este artigo fornece observações complementares à documentação de referência para essa API.

A ObservableCollection<T> classe representa uma coleção de dados dinâmica que fornece notificações quando os itens são adicionados ou removidos, ou quando a lista inteira é atualizada.

Em muitos casos, os dados com os quais você trabalha são uma coleção de objetos. Por exemplo, um cenário comum na vinculação de dados é usar um tal como um ItemsControlListBox, ListViewou TreeView exibir uma coleção de registros.

Você pode enumerar em qualquer coleção que implemente a interface IEnumerable. No entanto, para configurar associações dinâmicas para que inserções ou exclusões na coleção atualizem a interface do usuário automaticamente, a coleção deve implementar a interface INotifyCollectionChanged. Essa interface expõe o CollectionChanged evento, um evento que deve ser gerado sempre que a coleção subjacente for alterada.

A ObservableCollection<T> classe é um tipo de coleta de dados que implementa a INotifyCollectionChanged interface.

Antes de implementar sua própria coleção, considere usar ObservableCollection<T> ou uma das classes de coleção existentes, como List<T>, Collection<T> e BindingList<T>, entre muitas outras. Se você tiver um cenário avançado e quiser implementar sua própria coleção, considere usar IList, que fornece uma coleção não genérica de objetos que podem ser acessados individualmente pelo índice. A implementação IList fornece o melhor desempenho com o mecanismo de vinculação de dados.

Observação

Para oferecer suporte total à transferência de valores de dados de objetos de origem de vinculação para destinos de vinculação, cada objeto em sua coleção que ofereça suporte a propriedades vinculáveis deve implementar um mecanismo de notificação de alteração de propriedade apropriado, como a INotifyPropertyChanged interface.

Para obter mais informações, consulte "Vinculação a coleções" em Visão geral da vinculação de dados.

Observações sobre o uso de XAML

ObservableCollection<T> pode ser usado como um elemento de objeto XAML no Windows Presentation Foundation (WPF), nas versões 3.0 e 3.5. No entanto, o uso tem limitações substanciais.

  • ObservableCollection<T>deve ser o elemento raiz, porque o atributo que deve ser usado para especificar o tipo restrito do genérico ObservableCollection<T> só tem suporte no elemento object para o x:TypeArguments elemento raiz.

  • Você deve declarar um x:Class atributo (o que implica que a ação de compilação para esse arquivo XAML deve ser Page ou alguma outra ação de compilação que compila o XAML).

  • ObservableCollection<T> está em um namespace e assembly que não são mapeados inicialmente para o namespace XML padrão. Você deve mapear um prefixo para o namespace e assembly e, em seguida, usar esse prefixo na marca de elemento de objeto para ObservableCollection<T>.

Uma maneira mais direta de usar ObservableCollection<T> recursos de XAML em um aplicativo é declarar sua própria classe de coleção personalizada não genérica que deriva de ObservableCollection<T>, e a restringe a um tipo específico. Em seguida, mapeie o assembly que contém essa classe e faça referência a ele como um elemento de objeto em seu XAML.